跳到主要内容

JZ58 对称的二叉树

https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

解一

public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
if (pRoot == null) return true;
return mirror(pRoot.left, pRoot.right);
}

boolean mirror(TreeNode left, TreeNode right) {
if(left == null) return right == null;
if(right == null) return false;
if(left.val != right.val) return false;

return mirror(right.right,left.left) && mirror(right.left,left.right);
}
}

这题其实没有那么难,主要是把左右两边当成一个整体去比对,以及这个递归条件的选择,这里就拿左右两边刚好对称的节点去比较

      1              
2 3
4 5 6 7

例如这里拿 4-7、5-6 这样对称

然后就是边界条件,当一个为空时,另一个也应该为空